package chapter_23_stragtegy.enum_strategy;

import java.math.BigDecimal;

/**
 * @author yaochenglong
 * @date 2017/10/20
 * 策略枚举类
 */
public enum Calculator {

    ADD("+"){
        @Override
        public double exec(double a, double b) {
            return BigDecimal.valueOf(a).add(BigDecimal.valueOf(b)).doubleValue();
        }
    },
    SUB("-"){
        @Override
        public double exec(double a, double b) {
            return BigDecimal.valueOf(a).subtract(BigDecimal.valueOf(b)).doubleValue();
        }
    },
    MULTUPY("*"){
        @Override
        public double exec(double a, double b) {
            return BigDecimal.valueOf(a).multiply(BigDecimal.valueOf(b)).doubleValue();
        }
    },
    DIVIDE("/"){
        @Override
        public double exec(double a, double b) {
            return BigDecimal.valueOf(a).divide(BigDecimal.valueOf(b)).doubleValue();
        }
    };

    String value = "";

    Calculator(String _value) {
        this.value = _value;
    }


    public String getValue(){
        return value;
    }

    public abstract double exec(double a, double b);
}
